package com.example.user.UserPhone;/**
 * 财哥
 * <p>
 * 2023.4.14
 * Mybitas-puls
 */

import com.example.Utility.RedisUtils;
import com.example.Utility.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * @author Super
 * @version 1.0
 * @description: TODO
 * @date 2023.4.14 19:11
 */
@RestController
@RequestMapping("Verify")
public class getPhoneCode {
    @Autowired
    private RedisUtils redisUtils;


    /**
     * 发送验证码
     *
     * @param userPhone
     * @return Result<String>
     */
    @GetMapping("getPhoneCode")
    public Result<String> phoneCode(@RequestParam("userPhone") String userPhone) {
        // 如果缓存中的手机号 不存在 那就是没有绑定
        if (!redisUtils.haveKey(userPhone)) {
            // 手机号    -----  六位数验证码
            String random = randomCode.getRandomCode(6).toString();
            String returnCode = SendCode.sendCode(userPhone, random);
            redisUtils.redisAdd(userPhone, random, 60, TimeUnit.SECONDS);
            return "成功".equals(returnCode) ?
                    Result.succeed("发送成功")
                    :
                    Result.fail("发送失败！！");
        }
        return Result.fail("发送频率过快！！");
    }

    /**
     * 验证码校验
     *
     * @param verifyParam
     * @return Result<String>
     */
    @PostMapping("/verifyCode")
    public Result<String> VerifyCode(@RequestBody Map<String, String> verifyParam) {
        // 参数  手机号
        String phone = verifyParam.get("phone");
        // 前端 验证码
        String code = verifyParam.get("code");
        // redis 验证码
        String redisCode = redisUtils.getRedisDate(phone);
        return Result.succeed(code.equals(redisCode) ? "验证成功" : "验证失败");
    }

}
